#include "common.cpp"
#include <iostream>
#include <Cgicc.h>
#include <cgicc/HTTPRedirectHeader.h>
#include "cgicc/HTTPHTMLHeader.h"

using namespace std;
using namespace cgicc;

int main()
{

Cgicc cgi;
form_iterator t;


int 
	from= 0
	,to= 0
;

string 
	cmd= string("")
	,url= string("http://localhost/gfx/") 
;


    int n = 8;  // n sono il numero degli AS
    n++;        // incremento n di uno per non usare l'indice zero di vettori e matrici
	
    Simulator simulatore(n);

    simulatore.physicalConfig(); // Istanzio la rete fisica inserita nel file di configurazione           
    simulatore.calculateLogicalNet();
    simulatore.trafficConfig(); // Istanzio il traffico inserito nel file di configurazione





t= cgi.getElement("cmd");
if( t != (*cgi).end() && !t->isEmpty() )
{
	cmd= ( (**t) .c_str() );
}
//cout << cmd ;



if( cmd == "" )
{
cout << "Content-Type: text/plain\n\n" ;
//cout<< "xml dump";
simulatore.printXml();
}



if( cmd == "elimina Traffico" )
{


t= cgi.getElement("traffic_from_delete");
if( t != (*cgi).end() && !t->isEmpty() )
{
	from= atoi( (**t) .c_str() );
}



t= cgi.getElement("traffic_to_delete");
if( t != (*cgi).end() && !t->isEmpty() )
{
	to= atoi( (**t) .c_str() );
}

	if( from <=0 )
	{
		cout<< "\nerror on from:" <<from;
		return 0;
	}
	
	if( to <=0 ) 
	{
		cout<< "\nerror on to:" <<to;
		return 0;		
	}

cout << "Content-Type: text/plain\n\n" ;
	
	simulatore.deleteTraffic( from ,to );
	simulatore.update();
simulatore.printXml();
	simulatore.saveConfig("config.xml");

cout << *(new HTTPRedirectHeader( url ) ) ;

}



return 0;
}
